//CS（Code Segment）：代码段寄存器
//DS（Data Segment）：数据段寄存器
//SS（Stack Segment）：堆栈段寄存器
//ES（Extra Segment）：附加段寄存器

//EBP 指针一般指向栈底
//ESP 指针一般指向栈顶	往往都有 ESP <= EBP
//在一个函数中,栈的长度基本等于 ESP - EBP；指令 SUB ESP,XXX 来开辟栈空间
//如:ESP .. .. .. .. .. .. .. .. .. .. .. EBP,中间的省略号为栈数据空间


//下面代码为演示作用,主要为语句示例
_asm
{
	PUSH  EBP		//压栈,等价于MOV DWORD PTR:SS[ESP],EBP, SUB ESP,4;
	MOV   EBP,ESP		//保存次方法外的堆栈(此代码后的EBP+XXX)为方法外的堆栈 EBP+4为原栈底
	SUB   ESP,400		//开辟栈空间0x400
	MOVSX EAX,BYTE PTR DS:[EDI+5]	//有符号位传输1字节
	MOVZS EAX,BYTE PTR DS:[EDI+5]	//无符号位传输1字节
	MOV   ESI,DWORD PTR SS:[EBP+8]	//4字节转移
	PUSH  0		//压栈
	CALL  ESI		//随便写的
	MOV   ESP,EBP		//恢复方法外的栈顶
	POP   EBP		//恢复方法外的栈底
	RETN 
}